# 初始化方法  __init__

#
# class Cat:
#     def __init__(self, name):
#         self.name = name
#
#     def eat(self):
#         print(f'小猫{self.name}爱吃鱼')
#
#
# blue_cat = Cat('蓝猫')
# blue_cat.eat()
# black_cat = Cat('黑猫')
# black_cat.eat()

# 打印输出对象的属性信息  __str__
# class Cat:
#     def __init__(self, name, age):
#         self.name = name
#         self.age = age
#
#     def __str__(self):
#         return f'姓名：{self.name}，年龄：{self.age}'
#
#
# tom = Cat('汤姆',3)
# print(tom)

'''案例  小明体重75公斤
        每次跑步会减肥0.5公斤
        每次吃东西会增重1公斤
        类名：人类（Person）
        属性：体重(weight)  姓名（name）
        方法：跑步（run）  --→  修改属性值
             吃东西（eat）  --→  修改属性值'''

#
# class Person:
#     def __init__(self, name, weight):
#         self.name = name
#         self.weight = weight
#
#     def __str__(self):
#         return f'{self.name}目前的体重为{self.weight}kg'
#
#     def run(self):
#         self.weight -= 0.5
#         print(f'{self.name}跑步了，体重减少0.5kg')
#
#     def eat(self):
#         self.weight += 1
#         print(f'{self.name}吃东西了，体重增加1kg')
#
#
# if __name__ == '__main__':
#     xming = Person('小明', 75.0)
#     print(xming)
#     xming.run()
#     print(xming)
#     xming.eat()
#     print(xming)

'''案例  登录
   进入某web项目登录界面，输入用户名、密码和验证码之后登录系统'''

# class LoginPage:
#     def __init__(self, name, password, code):
#         self.name = name
#         self.password = password
#         self.code = code
#
#     def login(self):
#         print(f'1.输入用户名：{self.name}')
#         print(f'2.输入密码：{self.password}')
#         print(f'3.输入验证码：{self.code}')
#         print('点击登录')
#
# if __name__ == '__main__':
#     admin = LoginPage('admin', '123456', '8888')
#     admin.login()

'''案例  摆放家具
    类名：家具 （HouseItem）
    属性：名字 （name）
         占地面积 (area)
         方法： __str__  __init__'''


class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return f'{self.name} 占地面积为：{self.area}'


'''类名:房子类(House)
    属性：户型(h_type)
        总面积：total_area
        家具名称列表：item_list = []
    方法： __init__,  __str__
    添加家具的方法 add_item(1.修改剩余面积  2. 判断剩余面积和家具面积的关系  3. 向家具列表中添加家具的名字'''


class House:
    def __init__(self, h_type, area):
        self.h_type = h_type
        self.total_area = area
        self.free_area = area
        self.item_list = []

    def __str__(self):
        return f'当前房子户型为:{self.h_type}，总面积为：{self.total_area}平米、剩余面积{self.free_area}平米、家具名称列表：{self.item_list}'

    def add_item(self, item):
        if self.free_area > item.area:
            print(f'添加家具：{item}')
            self.item_list.append(item.name)
            self.free_area -= item.area
        else:
            print('房子剩余面积不足，换个大房子吧')


if __name__ == '__main__':
    bed = HouseItem('席梦思', 4)
    chest = HouseItem('衣柜', 2)
    table = HouseItem('餐桌', 1.5)
    # 创建房子
    house = House('三室一厅', 100)
    print(house)
    house.add_item(bed)
    print(house)
    house.add_item(chest)
    print(house)
    house.add_item(table)
    print(house)
